"""
LLM结果解析工具

这个模块提供了解析LLM（大语言模型）返回结果的工具类。
主要用于从特定格式的字符串中提取有用信息。
"""
import re
from typing import List


class LLMParser:
    """
    LLM结果解析工具类
    
    提供了一系列静态方法，用于解析LLM返回的各种格式的字符串。
    支持XML格式、特殊标记格式等。
    """
    
    @staticmethod
    def extract_file_paths(xml_content: str) -> List[str]:
        """
        从XML格式的字符串中提取所有文件路径
        
        Args:
            xml_content: 包含文件路径的XML格式字符串
                格式示例:
                <FILE_LIST>
                <FILE>/path/to/file1.py</FILE>
                <FILE>/path/to/file2.py</FILE>
                </FILE_LIST>
                
        Returns:
            List[str]: 提取到的文件路径列表
            
        示例:
            >>> content = '''
            ... <FILE_LIST>
            ... <FILE>/path/to/block_utils.py</FILE>
            ... <FILE>/path/to/cal.py</FILE>
            ... </FILE_LIST>
            ... '''
            >>> LLMParser.extract_file_paths(content)
            ['/path/to/block_utils.py', '/path/to/cal.py']
        """
        # 使用正则表达式匹配<FILE>标签中的内容
        pattern = r'<FILE>(.*?)</FILE>'
        
        # 使用re.findall提取所有匹配项
        # re.DOTALL使.能匹配换行符
        matches = re.finditer(pattern, xml_content, re.DOTALL)
        
        # 提取并清理文件路径
        file_paths = [match.group(1).strip() for match in matches]
        
        return file_paths 